package com.archtecture.view.beans;

import java.io.Serializable;

import com.archtecture.control.enums.Arquivo;
import com.archtecture.control.models.ModelAb;
import com.archtecture.view.utils.UtilWeb;

public abstract class PadraoTelaAb<Model extends ModelAb> implements Serializable {

	/**
	 * 
	 */
	private static final long	serialVersionUID	= 8482930786298441326L;
	
	private Model				model;

	private boolean				editando;

	public abstract Model getInstance();

	protected String getLblTituloPaginaCadastro() {
		return "titulo_cadastro_" + getModel().getClass().getSimpleName().toLowerCase();
	}

	protected String getLblTituloPaginaConsulta() {
		return "titulo_consulta_" + getModel().getClass().getSimpleName().toLowerCase();
	}

	protected String getLblTituloPaginaEdicao() {
		return "titulo_edicao_" + getModel().getClass().getSimpleName().toLowerCase();
	}

	/**
	 * @return the model
	 */
	public Model getModel() {
		if (this.model == null) {
			this.model = getInstance();
		}
		return this.model;
	}

	public final String getTituloPagina() {

		if (!isEditando()) {
			return UtilWeb.obterTextoArquivo(Arquivo.LABELS, getLblTituloPaginaConsulta());
		} else if (getModel().getCodigo() == null) {
			return UtilWeb.obterTextoArquivo(Arquivo.LABELS, getLblTituloPaginaCadastro());
		} else {
			return UtilWeb.obterTextoArquivo(Arquivo.LABELS, getLblTituloPaginaEdicao());
		}
	}

	public boolean isEditando() {
		return editando;
	}

	/**
	 * @param editando
	 *            the editando to set
	 */
	public void setEditando(final boolean editando) {
		this.editando = editando;
	}

	/**
	 * @param model
	 *            the model to set
	 */
	public void setModel(final Model model) {
		this.model = model;
	}

}
